home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Scope
/
Scope Disk #008 (199x)(Scope PD)(US)[WB].zip
/
Scope Disk #008 (199x)(Scope PD)(US)[WB].adf
/
Asm
/
startup.asm
< prev
next >
Wrap
Assembly Source File
|
1990-12-05
|
3KB
|
139 lines
; startup-sequence
XREF _main
; Exec entries
_LVOForbid EQU -$84
_LVOAllocMem EQU -$C6
_LVOFreeMem EQU -$D2
_LVOFindTask EQU -$126
_LVOSetSignal EQU -$132
_LVOGetMsg EQU -$174
_LVOReplyMsg EQU -$17A
_LVOWaitPort EQU -$180
_LVOCloseLibrary EQU -$19E
_LVOOpenLibrary EQU -$228
; DOS entries
_LVOOpen EQU -$1E
_LVOClose EQU -$24
_LVORead EQU -$2A
_LVOWrite EQU -$30
_LVOInput EQU -$36
_LVOOutput EQU -$3C
_LVOSeek EQU -$42
_LVODeleteFile EQU -$48
_LVOLock EQU -$54
_LVOUnLock EQU -$5A
_LVOCurrentDir EQU -$7E
_LVOIOErr EQU -$84
; Intuition entries
_LVOAutoRequest EQU -$15C
; Process defs
pr_MsgPort EQU $5C
pr_CurrentDir EQU $98
pr_ConsoleTask EQU $A4
pr_CLI EQU $AC
; startup message defs
sm_ToolWindow EQU $20
sm_ArgList EQU $24
; workbench arg def
wa_Lock EQU $0
; file handle definition
fh_Type EQU $8
; cli struct defs
cli_StandardInput EQU $1C
cli_StandardOutput EQU $38
;
MODE_OLDFILE EQU 1005
;
move.l d0,d2
move.l a0,a2
lea DosName,a1
moveq.l #0,d0
move.l $4,a6
jsr _LVOOpenLibrary(a6)
move.l d0,_DOSBase
beq WrapUp
sub.l a1,a1
jsr _LVOFindTask(a6)
move.l d0,a3
tst.l pr_CLI(a3)
beq.s x.workbench
; CLI startup
subq.w #1,d2
clr.b $0(a2,d2)
x.cli move.l a2,DosCmdBuf
move.b (a2)+,d0
cmp.b #' ',d0
bne.s x.click
subq.w #1,d2
bra.s x.cli
x.click:
move.l d2,DosCmdLen
move.l pr_CLI(a3),a0
add.l a0,a0
add.l a0,a0
move.l cli_StandardInput(a0),_stdin
move.l cli_StandardOutput(a0),_stdout
sub.l a2,a2
bra x.begin
;
x.workbench:
clr.l DosCmdBuf
lea pr_MsgPort(a3),a0
jsr _LVOWaitPort(a6)
lea pr_MsgPort(a3),a0
jsr _LVOGetMsg(a6)
move.l _DOSBase,a6
move.l d0,WBenchMsg
move.l d0,a2
tst.l sm_ArgList(a2)
beq.s x.parm
move.l sm_ArgList(a2),a0
move.l wa_Lock(a0),d1
jsr _LVOCurrentDir(a6)
x.parm:
tst.l sm_ToolWindow(a2)
beq.s x.begin
move.l sm_ToolWindow(a2),d1
move.l #MODE_OLDFILE,d2
jsr _LVOOpen,a6
move.l d0,_stdin
move.l d0,_stdout
beq.s x.begin
lsl.l #2,d0
move.l d0,a0
move.l fh_Type(a0),pr_ConsoleTask(a3)
x.begin:
move.l a3,a1
move.l DosCmdBuf,a0
move.l DosCmdLen,d0
move.l _DOSBase,a6
; enter with: a0,d0 = CLI parameters (a0=0 for WorkBench)
; a1,a2 = Process, WB message (a2=0 for CLI)
; a6 - positioned for DOS library
jsr _main
tst.l WBenchMsg
beq.s DosWrap
move.l _stdout,d1
beq.s DosWrap
move.l _DOSBase,a6
jsr _LVOClose(a6)
DosWrap:
move.l _DOSBase,a1
move.l $4,a6
jsr _LVOCloseLibrary(a6)
tst.l WBenchMsg
beq.s WrapUp
jsr _LVOForbid(a6)
move.l WBenchMsg,a1
jsr _LVOReplyMsg(a6)
WrapUp rts
WBenchMsg dc.l 0
_stdin dc.l 0
_stdout dc.l 0
DosName dc.b "dos.library",0
_DOSBase ds.l 1
DosCmdLen ds.l 1
DosCmdBuf ds.l 1